<?php
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// Copyright (C) 2008-2999  Evgenij Cigancov (Евгений Цыганцов)           //
// Copyright (C) 2008-2999  Ilia Smirnov (Илья Смирнов)                   // 
// Copyright (C) 2008-2999  Mariya Rojayskaya (Мария Рожайская)           // 
//                                                                        //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

// Подключаем библиотеки
require_once('lib.php');
require_once('form.php');

// id субдоверенности
$id = optional_param('id', 0, PARAM_INT);
// id доверенности, от которой передоверяется субдоверенность
$aclwarrantid = required_param('aclwarrantid', PARAM_INT);

// добавление и сключение персон на субдоверенность
$removeselect = optional_param_array('removeselect', null, PARAM_INT);
$addselect = optional_param_array('addselect', null, PARAM_INT);

// id персон для списка назначеных персон
$removedata = optional_param('removedata', '', PARAM_TEXT);
$adddata = $addselect;

// $removeselect и $addselect пусты - зашли в первый раз, получаем данные из базы
if (!isset($removeselect) AND !isset($addselect))
{
    $addlist = $DOF->storage('aclwarrantagents')->get_subwarrant_applicantlist($aclwarrantid);
    
    // нажали далее, но при этом ничего не выбрали
    if (isset($removedata))
    {
        $removelist = array();
        $removedata = explode('_', $removedata);
        
        foreach ($addlist as $pid => $name)
        {
            foreach ($removedata as $value)
            {
                if ($pid == $value)
                {
                    $removelist[$value] = $name;
                }
            }
        }
        
    }else 
    {
        $removelist = $DOF->storage('aclwarrantagents')->get_subwarrant_personlist($aclwarrantid);
    }
     
}else if (isset($addselect))
{// если нажата кнопка добавления/исключения
    if (empty($adddata) AND empty($removedata))
    {// данные о списках пусты - получаем по-умолчанию
        $addlist = $DOF->storage('aclwarrantagents')->get_subwarrant_applicantlist($aclwarrantid);
        $removelist = $DOF->storage('aclwarrantagents')->get_subwarrant_personlist($aclwarrantid);
  
    }else 
    {
        // преобразуем данные о списках обратно в массив
        $removedata = explode('_', $removedata);
        
        // теперь восстанавливаем имена по id 
        $addlist = $DOF->storage('aclwarrantagents')->get_subwarrant_applicantlist($aclwarrantid);

        // список претендентов всегда один
        $addlistcopy = $addlist;
         
        $removelist = array();
        
        // восстанавливаем $addlist и $removelist по $adddata $removedata; 
        foreach ($addlistcopy as $key => $value)
        {
            foreach ($removedata as $pid)
            {
                if ($pid == $key)
                {
                    $removelist[$key] = $value;
                }
            }
        }
        
        // теперь исключаем (или включаем) из $removelist значения из $addselect
        foreach ($addselect as $key => $value)
        {
            foreach ($removelist as $pid => $name)
            {// данная персона числится в списке для назначений - удаляем ее из $removelist
                if ($pid == $value)
                {
                    unset($removelist[$pid]);
                    unset($addselect[$key]);
                    break;
                }
            }
        }
          
        // все оставшиеся записи в $addselect добавляем в $removelist
        foreach ($addlist as $key => $value)
        {
            foreach ($addselect as $key2 => $pid)
            {
                if ($key == $pid)
                {
                    $removelist[$key] = $value;
                    unset($addselect[$key2]);
                    break;
                }
            }
        }  
    }
    
}else if (isset($removeselect))
{// нажата кнопка далее - переходим к форме создания/редактирования субдоаеренности
    $personlist = implode('_', $removeselect);
	
	$url = $DOF->url_im('acl', '/givewarrant.php', array('id' => $id, 'aclwarrantid' => $aclwarrantid,
			'personlist' => $personlist));
	
	header("Location: ".$url);
	exit();
}

// формируем массив из ключей $removelist
$removedata = array();

foreach ($removelist as $key => $value)
{
    $removedata[] = $key;
}

//вывод на экран
//печать шапки страницы
$DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);

if ($DOF->im('acl')->is_access('give_warrant'))
{	
	$addremove = $DOF->modlib('widgets')->addremove($DOF->url_im('acl', '/addremove.php', 
			array('id' => $id, 'aclwarrantid' => $aclwarrantid, 
			        'removedata' => implode('_', $removedata))));
	
	// Устанавливаем надписи в форме
	$addremovestrings = new Object();
	
	$addremovestrings->addlabel    = $DOF->get_string('warrant_applicants_on_subwarrant', 'acl');
	$addremovestrings->removelabel = $DOF->get_string('warrant_persons_on_subwarrant', 'acl');
	$addremovestrings->addarrow    = $DOF->get_string('warrant_addremove_persons', 'acl');
	$addremovestrings->removearrow = $DOF->modlib('ig')->igs('next');
	$addremove->set_default_strings($addremovestrings);
	
	// отсортируем массивы
	asort($addlist);
	asort($removelist);
	// список учеников входящих в список для получения доверености
	$addremove->set_remove_list($removelist);
	
	// список персон доступных для получения доверенности
	$addremove->set_add_list($addlist);
	
	// Отображаем форму
	$addremove->print_html();
}

//печать подвала
$DOF->modlib('nvg')->print_footer(NVG_MODE_PORTAL);

?>